#include "api.h"
#include "log/log.h"
#include "timer/WheelTimer.h"

void test_input_event_bind()
{
	LOG_INFO("Im You Dad");
}

/**
 * 待实现功能：
 * 添加FileSystem用于增加引擎路径支持
 * 添加Texture类用于引擎导入图片
 * 添加Shader类用于编译着色器文件
 * 添加ShaderManager用于管理全局着色器
 * 添加编辑器功能
 *
 *
 */

class MainApplication : public Application
{
public:
	MainApplication()
	{
		//使用此语句可以启用编辑器窗口
		//默认关闭编辑器窗口，创建的是游戏内窗口
		Application::enableEditor = true;
		if (Application::window->GetInputer())
		{
			Application::window->GetInputer()->BindEvent(
				EKeyCode::B,
				UInput::InputType::KeyDown,
				UPackCodesToEventFunc(
					void,
					{
						test_input_event_bind();
					}));
		}
		else
		{
			LOG_ERROR("Input Error");
		}

		fn = BindCommonFunction<void>(test_input_event_bind);
	}

	virtual void onCreated()
	{
		Application::CreateWindow("First Window", 1366, 768);
	}

	virtual void onInput()
	{
		if (Application::window->GetInputer()->GetKey(EKeyCode::A))
		{
			// LOG_INFO("A Pressed!");
			fn();
		}
	}

	virtual ~MainApplication()
	{
	}

private:
	DelegateFuncType<void> fn;
};

Application *CreateApplication()
{
	return new MainApplication();
}